Przestrzeń adresowa
Przestrzeń adresowa – pojęcie używane w informatyce, elektronice i systemach komputerowych, określające zbiór wszystkich możliwych adresów, które mogą być przydzielone do elementów pamięci, urządzeń wejścia‑wyjścia, zasobów sieciowych lub innych elementów systemu. Przestrzeń ta definiuje zakres adresów, w którym system operuje i które mogą być używane przez programy oraz sprzęt.
Definicja
Adres to unikatowy identyfikator, który pozwala na odwoływanie się do określonego miejsca w pamięci lub interfejsu komunikacyjnego. Przestrzeń adresowa to formalny zbiór wszystkich takich identyfikatorów, wyrażony zazwyczaj jako przedział liczb całkowitych (np. od 0x0000 do 0xFFFF) albo jako ciąg bitów o określonej długości.
Rozmiar przestrzeni adresowej zależy od liczby dostępnych bitów w adresie. Dla systemu 8‑bitowego maksymalna przestrzeń wynosi 2⁸ = 256 adresów, dla 32‑bitowego 2³² ≈ 4,29·10⁹ adresów, a dla 64‑bitowego 2⁶⁴ ≈ 1,84·10¹⁹ adresów.
Rodzaje przestrzeni adresowej
- Przestrzeń adresowa pamięci (memory address space) – odnosi się do adresów wirtualnych i fizycznych pamięci komputera. Rozróżnia się:
- Przestrzeń adresowa I/O – zakres adresów przeznaczonych dla urządzeń wejścia‑wyjścia, wykorzystywany w architekturach x86 oraz w systemach mikroprocesorowych.
- Przestrzeń adresowa sieciowa – obejmuje adresy przydzielane w sieciach komputerowych, takie jak adres IP (IPv4: 32 bity, IPv6: 128 bitów) oraz adresy MAC.
- Przestrzeń adresowa systemu plików – wirtualne identyfikatory plików i katalogów, np. identyfikatory inode w systemach Unix-opartych.
Historia i rozwój
Początkowo, w latach 1970‑1980 wczesnych komputerów osobistych, przestrzeń adresowa była ograniczona do kilku kilobajtów, co wymuszało stosowanie technik takich jak segmentacja i bankowanie pamięci. Wraz z rozwojem architektury 32‑bitowej w 1990 roku oraz późniejszym przejściem na 64‑bitowe architektury (np. AMD64, Intel Itanium), możliwe stało się adresowanie terabajtów pamięci.
Zastosowanie
Przestrzeń adresowa jest kluczowa w wielu dziedzinach:
- Systemy operacyjne – zarządzają wirtualną przestrzenią adresową, mapując ją na fizyczną pamięć RAM i dysk twardy.
- Programowanie – wskaźniki i referencje w językach takich jak C czy C++ operują na adresach pamięci.
- Komunikacja sieciowa – routing i translacje adresów (np. NAT) opierają się na manipulacji przestrzenią adresową IP.
- Urządzenia wbudowane – kontrolery mikrokontrolerów wykorzystują dedykowane przestrzenie I/O do sterowania peryferiami.
Przykłady
Przykładowa 32‑bitowa przestrzeń adresowa w systemie operacyjnym:
0x00000000 – 0x7FFFFFFF : użytkowa (przestrzeń procesów) 0x80000000 – 0xFFFFFFFF : jądro systemu (kernel space)
W przypadku adresacji IPv4, każdy adres jest 32‑bitowy, co daje łącznie 2³² = 4 294 967 296 możliwych adresów, podzielonych na klasy A, B, C oraz specjalne zakresy (np. 127.0.0.0/8 – adres loopback).
Powiązane pojęcia
Więcej informacji można znaleźć w następujących artykułach:
Literatura
- Andrew S. Tanenbaum, Systemy operacyjne – projekt, implementacja i analiza, 4. wyd., PWN, 2022.
- David A. Patterson, John L. Hennessy, Computer Organization and Design – The Hardware/Software Interface, 6. wyd., Morgan Kaufmann, 2020.
- W. Richard Stevens, UNIX Network Programming, 3. wyd., Prentice Hall, 2019.